/**
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-01-19 11:43:20
 * @Description  : 角色操作成功后的日志记录
 */

const { LOG_TYPE } = require('@/constants/log')
const { logRecord } = require('@/utils/logRecord')
const { getPermissionByIds } = require('@/utils/getModelInfo')

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 角色创建时的日志记录，记录创建时的状态
 * @param {*} ctx
 * @param {*} next
 */
module.exports.createRoleLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    let { name, type, desc, label, isVisible, permissionIds } = ctx.request.body
    // 进行日志记录
    const permissions = await getPermissionByIds(permissionIds)

    const logType =
      +type === 0 ? LOG_TYPE.SYSTEM_ROLE_CREATE : LOG_TYPE.DOC_ROLE_CREATE

    await logRecord(ctx, logType, {
      // 外层字段代表现如今操作实体的情况
      roleId: ctx.logs.roleId, // 角色ID
      // 创建时需要记录的东西（是当时的情况）
      add: {
        role: {
          id: ctx.logs.roleId,
          name,
          desc: desc ? desc : '',
          label,
          type,
          isVisible
        }, // 添加时角色名称
        permissions // 角色对应的权限,
      }
    })
  }
}

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 角色更新时的日志记录，需要记录哪些字段更新了
 * @param {*} ctx
 * @param {*} next
 */
module.exports.updateRoleLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    const { logs } = ctx
    for (let i = 0; i < logs.length; i++) {
      await logRecord(ctx, logs[i].type, logs[i])
    }
  }
}

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 记录角色删除成功后日志记录
 * @param {*} ctx
 * @param {*} next
 */
module.exports.delRoleLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    const { logs } = ctx
    for (let i = 0; i < logs.length; i++) {
      await logRecord(ctx, logs[i].type, logs[i])
    }
  }
}
